Các loại hàm tạo Hàm_tạo_(lập_trình_hướng_đối_tượng)

Hàm tạo tham số

Hàm tạo tham số (parameterized constructor) là hàm tạo có kèm theo ít nhất một đối số. Ví dụ:

class Example{     int x, y;   public:     Example();     Example(int a, int b); // Parameterized constructor};Example:: Example(){}Example:: Example(int a, int b){     x = a;     y = b;}

Khi một đối tượng được khai báo trong hàm tạo tham số, giá trị ban đầu phải được truyền qua như là đối số của hàm tạo. Cách thông thường để khai báo đối tượng có thể không hoạt động. Hàm tạo có thể được gọi tường minh hay ngầm. Phương thức gọi hàm tạo ngầm còn được gọi là phương thức tốc ký (shorthand).

    Example e = Example(0, 50); // Explicit call    Example e(0, 50);           // Implicit call

Hàm tạo mặc định

Nếu lập trình viên không cung cấp hàm tạo cho một lớp, hầu hết mọi ngôn ngữ đều cung cấp một hàm tạo mặc định (default constructor).

Hành vi của hàm tạo mặc định phụ thuộc vào ngôn ngữ. Nó có thể khởi tạo các thành viên dữ liệu về số 0 hay giá trị tương đương, hoặc có thể không làm gì.

Một số ngôn ngữ (Java, C#, VB.NET) sẽ mặc định tạo mảng của các kiểu lớp để chứa tham chiếu rỗng. Ngôn ngữ không có tham chiếu rỗng có thể không cho phép xây dựng mặc định các mảng của đối tượng không được xây dựng mặc định, hay yêu cầu khởi tạo tường minh tại thời điểm tạo (C++):

#include <iostream>class student{    public:        int a,b;        student(a=0,b=0)   //default constructor};int main() {}

Hàm tạo sao chép

Hàm tạo sao chép (copy constructor) định nghĩa các hành động được thực hiện khi trình biên dịch sap chép đối tượng lớp. Một hàm tạo sao chép có một tham số chính thức chính thức là kiểu của lớp (tham số đó có thể tham chiếu tới một đối tượng).Nó được sử dụng để tạo ra một bản sao của một đối tượng có sẵn của cùng lớp. Mặc dù cả hai lớp giống nhau, nó được tính như là một hàm tạo chuyển đổi.

Mặc dù hàm tạo sao chép thường được viết tắt là copy ctor hay cctor, nó không có liên quan gì đến hàm tạo lớp (class constructor) được dùng trong.NET dù được viết tắt giống nhau.

Hàm tạo chuyển đổi

Hàm tạo chuyển đổi (conversion constructor) cung cấp một phương tiện cho trình biên dịch để ngầm tạo một đối tượng dựa trên một đối tượng khác không cùng kiểu. Các hàm tạo này thường được ngầm gọi để chuyển các đối số hoặc toán hạng sang một kiểu thích hợp, nhưng chúng cũng có thể được gọi tường minh.

Hàm tạo di chuyển

Trong C++, hàm tạo di chuyển (move constructor) lấy giá trị tham chiếu tới một đối tượng của lớp, và được dùng để hiện thực chuyển quyền sở hữu tài nguyên của đối tượng tham số.